package com.example.ipcputest.Test;

import com.example.ipcputest.bean.OSRuntimeInfo;
import com.example.ipcputest.util.IpUtil;
import com.example.ipcputest.util.SystemInfoUtil;
import com.sun.management.OperatingSystemMXBean;

import java.io.File;
import java.lang.management.ManagementFactory;
import java.text.DecimalFormat;

public class MonitorTest {
    public static void main(String[] args) {
        String ipAddr = IpUtil.getLinuxLocalIp();
        System.out.println("获取的传输IP为"+ipAddr);

        OSRuntimeInfo osRuntimeInfo = SystemInfoUtil.getOSRuntimeInfo();
        System.out.println(osRuntimeInfo);

        int i = memoryLoad();
        System.out.println("内存占有情况"+i+"%");

        File[] roots = File.listRoots();// 获取磁盘分区列表
//        for (File file : roots) {
            System.out.println("硬盘"+roots[0].getPath() + "信息如下:");
            long free = roots[0].getFreeSpace();
            long total = roots[0].getTotalSpace();
            long use = total - free;
            System.out.println("空闲未使用 = " + change(free) + "G");// 空闲空间
            System.out.println("已经使用 = " + change(use) + "G");// 可用空间
            System.out.println("总容量 = " + change(total) + "G");// 总空间
            System.out.println("使用百分比 = " + bfb(use, total));
            System.out.println();
//        }


    }


    private static OperatingSystemMXBean osmxb = (OperatingSystemMXBean)
            ManagementFactory.getOperatingSystemMXBean();

    //内存占有率
    public static int memoryLoad() {

        double totalvirtualMemory = osmxb.getTotalPhysicalMemorySize();

        double freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();

        double value = freePhysicalMemorySize / totalvirtualMemory;

        int percentMemoryLoad = (int) ((1 - value) * 100);

        return percentMemoryLoad;

    }

    public static long change(long num) {
        // return num;
        return num / 1024 / 1024 / 1024;
    }

    public static String bfb(Object num1, Object num2) {
        double val1 = Double.valueOf(num1.toString());
        double val2 = Double.valueOf(num2.toString());
        if (val2 == 0) {
            return "0.0%";
        } else {
            DecimalFormat df = new DecimalFormat("#0.00");
            return df.format(val1 / val2 * 100) + "%";
        }
    }

}
